using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace CollabApp.Domain.Entities;

/// <summary>
/// 基础实体类 - 包含所有实体的共有属性
/// 提供统一的主键、时间戳和软删除功能
/// </summary>
public abstract class BaseEntity
{
    /// <summary>
    /// 实体唯一标识符 - 主键，所有实体的统一标识
    /// </summary>
    [Key]
    public Guid Id { get; set; } = Guid.NewGuid();

    /// <summary>
    /// 创建时间 - 实体首次创建的UTC时间
    /// </summary>
    [Column("created_at")]
    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;

    /// <summary>
    /// 更新时间 - 实体最后一次修改的UTC时间
    /// </summary>
    [Column("updated_at")]
    public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;

    /// <summary>
    /// 软删除标志 - 标记实体是否被逻辑删除
    /// false: 正常状态, true: 已删除状态
    /// </summary>
    [Column("is_deleted")]
    public bool IsDeleted { get; set; } = false;
}
